/**
 * 
 */
package logica.fachadas;

import java.rmi.Remote;
import java.rmi.RemoteException;

import logica.datatypes.Dados.DataDados;
import logica.datatypes.Jugador.DataJugador_R1;
import logica.datatypes.Jugador.DataJugador_R11;
import logica.excepciones.JugadoresException;
import logica.excepciones.PaisesException;
import logica.excepciones.PartidaException;
import java.io.Serializable;
import logica.colecciones.Observadores;
/**
 * @author pity
 *
 */
public interface IFachadaJugadores extends Remote{
	public void loginJugador(String nomJugador) throws RemoteException, PartidaException;
	
	public DataJugador_R11[] viusalizarTablero() throws RemoteException;
 
	public void distribuirFichas(String nomJugador, String nomPDest, int cantFichas) throws RemoteException, JugadoresException, PartidaException, PaisesException;

	public DataDados realizarAtaque(String nomJugador, String nomPOrig, String nomPDest) throws RemoteException, JugadoresException, PaisesException;

	public void reagruparFichas(String nomJugador, String nomPOrig, String nomPDest, int cantFichas) throws RemoteException, PaisesException, PartidaException, JugadoresException;

	public void finalizarTurno(String nomJugador) throws RemoteException, JugadoresException, PartidaException;
	
	public DataJugador_R1 obtenerJugador(String nomJugador) throws RemoteException;
	
	public Observadores getObservadores()throws RemoteException;
	
	public void setObservadores(Observadores observadores)throws RemoteException;
	
	public void agregarObservador(IObserver cliente) throws RemoteException;
	
	public void notificar() throws RemoteException;
	
	public int cantObs() throws RemoteException;
	
	public boolean hayJugadorEnTurnoEnPEnCurso() throws RemoteException;
	
	public DataJugador_R1 obtenerJugadorEnTurno() throws RemoteException;
	
	public String getMensajeJugadores() throws RemoteException;
	
	public void logoutJugador(String nomJugador) throws RemoteException,PartidaException;
	
	public boolean hayGanador() throws RemoteException;
	
	public boolean hayPartidaEnCurso()throws RemoteException;
	
	public boolean paisDelJugador(String nomPais, String nomJugador) throws RemoteException;
}
